home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / games / kenka / kenka2s.lzh / apic_load.has next >
Text File  |  1995-05-05  |  27KB  |  1,674 lines

  1. ******************************************
  2. *    1990/11/30    version 1.00
  3. *
  4. *    Written by Shadow Mountain ëeÄR
  5. ******************************************
  6. *    1995/5/4    version 1.00a
  7. *
  8. *    ëⁿæóÉlüFÆåûεü@ÄjÿN
  9. *    é╞éóé┴é─éαâRü[âhé≡éTé┬ìφÅ£é╡é╜é╛é»
  10. ******************************************
  11.  
  12.     .include    b:\include\doscall.mac
  13.     .include    b:\include\iocscall.mac
  14. *    .include    b:\include\fdef.h
  15.  
  16.     .xdef        _apic_load
  17.  
  18.     .offset        8
  19.  
  20. _name:        ds.l    1
  21. _x0:        ds.l    1
  22. _y0:        ds.l    1
  23.  
  24. savesize:    equ    4*8
  25.  
  26.     .text
  27.     .even
  28.  
  29. *******************************************************************
  30. * apic_load( str;filename ,[int;x0] ,[int;y0] )
  31. *******************************************************************
  32. _apic_load:
  33.     link    a6,#0
  34.     movem.l    d3-d7/a3-a5,-(sp)
  35.  
  36.     bsr    init
  37.  
  38.     move.l    _name(a6),a1    * âtâ@âCâïâlü[âÇâAâhâîâX
  39.     movem.l    _x0(a6),d1-d2    * d1=x0,d2=y0
  40.  
  41.     tst.w    d1
  42.     bmi    pload2        * x0é¬Å╚ù¬é│éΩé╜
  43.     move.l    d1,x0
  44. pload2:
  45.     tst.w    d2
  46.     bmi    pload3        * y0é¬Å╚ù¬é│éΩé╜
  47.     move.l    d2,y0
  48. pload3:
  49.     bsr    scr_chk
  50.     tst.l    d0
  51.     bmi    scr_err        * âéü[âhé¬é┐é¬éñ
  52.  
  53.     bsr    file_open
  54.     tst.l    d0
  55.     bmi    no_file_err    * âtâ@âCâïé¬é╚éó
  56.  
  57.     move.w    d0,-(sp)    * âwâbâ_ü[â`âFâbâN
  58.     DOS    _FGETC
  59.     cmp.b    #'P',d0
  60.     bne    no_pic_err
  61.     DOS    _FGETC
  62.     cmp.b    #'I',d0
  63.     bne    no_pic_err
  64.     DOS    _FGETC
  65.     cmp.b    #'C',d0
  66.     bne    no_pic_err
  67. pload4:
  68.     DOS    _FGETC
  69.     cmp.b    #$1a,d0
  70.     bne    pload4
  71. pload5:
  72.     DOS    _FGETC
  73.     tst.b    d0
  74.     bne    pload5
  75.  
  76.     addq.l    #2,sp
  77.  
  78.     move.l    sp,sp_save
  79.     move.l    sp_ptr,sp
  80.     move.l    buff_end,-(sp)
  81.     move.l    buff_size,-(sp)
  82.     move.l    buff_start,-(sp)
  83.     move.l    y0,-(sp)
  84.     move.l    x0,-(sp)
  85.     move.l    f_handle,-(sp)
  86.     bsr    L000b18        * âìü[âh
  87.     move.l    sp_save,sp
  88.     tst.l    d0
  89.     bmi    error3
  90.  
  91.     bsr    file_close
  92.  
  93.     lea.l    normal_end,a0
  94.     clr.l    d0        * É│ÅφÅIù╣
  95.     move.l    memptr,-(sp)
  96.     DOS    _MFREE
  97.     addq.l    #4,sp
  98.     movem.l    (sp)+,d3-d7/a3-a5
  99.     unlk    a6
  100.     rts
  101.  
  102. *******************************************
  103. * âoâbâtâ@âTâCâYôÖé≡âÅü[âNé╔É▌ÆΦé╖éΘ
  104. *******************************************
  105. init:
  106.     clr.l    memptr        * âüâéâèè╟ù¥â|âCâôâ^é≡âNâèâA
  107.     move.l    #$ffffff,-(sp)
  108.     DOS    _MALLOC
  109.     and.l    #$ffffff,d0    * ÄµéΦô╛éΘì┼æσé╠âüâéâèâuâìâbâN
  110.     move.l    d0,d2
  111.     sub.l    #6000,d0    * âXâ^âbâNâTâCâY
  112.     cmp.l    #128,d0
  113.     blt    no_mem_err    * ì┼Æß128âoâCâgòKùvé╚é╠é╔é╚é⌐é┴é╜
  114.  
  115.     move.l    #$e00000,d1
  116.     cmp.l    #$80400,d0
  117.     blt    init1
  118.     sub.l    #$80000,d0
  119.     move.l    d0,d1
  120. init1:
  121.     move.l    d0,buff_size    * âoâbâtâ@âTâCâY
  122.     move.l    d0,(sp)
  123.     DOS    _MALLOC        * âüâéâèé≡èmò█é╖éΘ
  124.     addq.l    #4,sp
  125.     tst.l    d0
  126.     bmi    no_mem_err    * è«æSé╔èmò█é┼é½é╚éó
  127.     move.l    d0,memptr    * âüâéâèè╟ù¥â|âCâôâ^
  128.     move.l    d0,buff_start    * âoâbâtâ@ɵô¬âAâhâîâX
  129.     add.l    d0,d1
  130.     move.l    d1,buff_end    * âoâbâtâ@ì┼ÅIâAâhâîâX
  131.     add.l    d0,d2
  132.     move.l    d2,sp_ptr    * âXâ^âbâNâAâhâîâX
  133.     rts
  134.  
  135. *******************************************
  136. * âOâëâtâBâbâNëµû╩é¬Ägùpé┼é½éΘé⌐â`âFâbâN
  137. *******************************************
  138. scr_chk:
  139.     moveq.l    #-1,d1
  140.     IOCS    _APAGE
  141.     rts
  142.  
  143. *******************************************
  144. * âtâ@âCâïÉVïKì∞ɼ
  145. *******************************************
  146. file_create:
  147.     move.w    #$20,-(sp)    * Æ╩Åφé╠âtâ@âCâï
  148.     move.l    a1,-(sp)
  149.     DOS    _CREAT
  150.     addq.l    #6,sp
  151.     move.l    d0,f_handle    * âtâ@âCâïânâôâhâï
  152.     rts
  153.  
  154. *******************************************
  155. * âtâ@âCâïâIü[âvâô
  156. *******************************************
  157. file_open:
  158.     clr.w    -(sp)
  159.     move.l    a1,-(sp)
  160.     DOS    _OPEN
  161.     addq.l    #6,sp
  162.     move.l    d0,f_handle    * âtâ@âCâïânâôâhâï
  163.     rts
  164.  
  165. *******************************************
  166. * âtâ@âCâïâNâìü[âY
  167. *******************************************
  168. file_close:
  169.     move.w    f_handle+2,-(sp)
  170.     DOS    _CLOSE
  171.     addq.l    #2,sp
  172.     rts
  173.  
  174. *******************************************
  175. * âGâëü[Åêù¥
  176. *******************************************
  177. chigau_err:
  178.     lea.l    chigau_mes,a1
  179.     bra    error
  180. read_err:
  181.     lea.l    read_mes,a1
  182.     bra    error
  183. disk_full_err:
  184.     lea.l    disk_full_mes,a1
  185.     bra    error
  186. write_err:
  187.     lea.l    write_mes,a1    * âfâBâXâNé╔Åæé½ì₧é▀é╚éó
  188.     bra    error
  189. scr_err:
  190.     lea.l    scr_mes,a1    * ëµû╩é¬Åëè·ë╗é│éΩé─éóé╚éó
  191.     bra    error
  192. point_err:
  193.     lea.l    point_mes,a1    * ì└òWé¬é¿é⌐é╡éó
  194.     bra    error
  195. no_mem_err:
  196.     lea.l    no_mem_mes,a1    * âüâéâèé¬é╜éΦé╚éó
  197.     bra    error
  198. no_pic_err:
  199.     addq.l    #2,sp
  200.     lea.l    no_pic_mes,a1    * éoéhébâtâ@âCâïé╞êßéñ
  201.     bra    error
  202. no_file_err:
  203.     lea.l    no_file_mes,a1    * âtâ@âCâïé¬î⌐é┬é⌐éτé╚éó
  204.  
  205. error:
  206.     move.l    memptr,d0
  207.     beq    error2
  208.     move.l    d0,-(sp)
  209.     DOS    _MFREE        * âüâéâèé¬èmò█é│éΩé─éóéΘé╚éτë≡ò·é╖éΘ
  210.     addq.l    #4,sp
  211. error2:
  212.     move.l    #1,d0        * âGâëü[âRü[âh
  213.     movem.l    (sp)+,d3-d7/a3-a5
  214.     unlk    a6
  215.     rts            * ê┘ÅφÅIù╣
  216.  
  217. error3:
  218.     move.l    d0,d7
  219.     bsr    file_close
  220.     cmp.l    #-32,d7
  221.     beq    point_err
  222.     cmp.l    #-8,d7
  223.     beq    no_mem_err
  224.     cmp.l    #-31,d7
  225.     beq    no_pic_err
  226.     cmp.l    #-35,d7
  227.     beq    disk_full_err
  228.     cmp.l    #-36,d7
  229.     beq    read_err
  230.     cmp.l    #-38,d7
  231.     beq    chigau_err
  232.  
  233.     lea.l    dummy_mes,a1
  234.     bra    error
  235.  
  236.  
  237.  
  238. *******************************************
  239.  
  240.  
  241. L000a54:
  242.     movea.l    a7,a1
  243.     movem.l    d3-d7/a3-a6,-(a7)
  244.     link    a6,#-1072
  245.     move.l    a6,-(a7)
  246.     lea.l    $0004(a7),a6
  247.     clr.l    -(a7)
  248.     DOS    _SUPER
  249.     move.l    d0,(a7)
  250.     bsr    L000a7e
  251.     move.l    d0,d1
  252.     DOS    _SUPER
  253.     addq.l    #4,a7
  254.     movea.l    (a7)+,a6
  255.     unlk    a6
  256.     move.l    d1,d0
  257.     movem.l    (a7)+,d3-d7/a3-a6
  258.     rts
  259.  
  260. L000a7e:
  261.     move.l    a7,$042a(a6)
  262.     move.w    $0006(a1),$0428(a6)
  263.     move.w    $000a(a1),d0
  264.     cmp.w    #$0003,d0
  265.     bhi    L001678
  266.     move.w    d0,$0402(a6)
  267.     move.w    $000e(a1),d0
  268.     move.w    $0012(a1),d2
  269.     move.w    $0016(a1),d1
  270.     move.w    $001a(a1),d3
  271.     bsr    L000c2e
  272.     movea.l    $001c(a1),a0
  273.     move.l    $0020(a1),d0
  274.     bsr    L000c16
  275.     movea.l    $041c(a6),a5
  276.     move.l    $0420(a6),d6
  277.     moveq.l    #$10,d7
  278.     moveq.l    #$00,d5
  279.     move.l    $0024(a1),$0424(a6)
  280.     move.b    $00e80028,-(a7)
  281.     bsr    L000c00
  282.     moveq.l    #$00,d0
  283.     bsr    L0015b0
  284.     move.w    $0402(a6),d0
  285.     move.b    L000b14(pc,d0.w),d0
  286.     bsr    L0015b0
  287.     move.w    $0414(a6),d0
  288.     bsr    L0015b0
  289.     move.w    $0416(a6),d0
  290.     bsr    L0015b0
  291.     bsr    L001586
  292.     bsr    L00162a
  293.     bsr    L000f32
  294.     move.b    (a7)+,$00e80028
  295.     bsr    L00151a
  296.     bsr    L00160c
  297.     moveq.l    #$00,d0
  298.     rts
  299.  
  300. L000b14:
  301.     .dc.b    $04,$08,$0f,$10
  302. L000b18:
  303.     movea.l    a7,a1
  304.     movem.l    d3-d7/a3-a6,-(a7)
  305.     link    a6,#-1072
  306.     move.l    a6,-(a7)
  307.     lea.l    $0004(a7),a6
  308. *    clr.l    -(a7)            * é▒é▒é╠ÆìÄ▀ê╡éóé╠âRü[âhé¬éuéàéÆéôéëéÅéÄü@éPüDéOéOéü
  309. *    DOS    _SUPER            * 1995/5/4 by Shiroh Nakaya
  310. *    move.l    d0,(a7)
  311.     bsr    L000b42
  312.     move.l    d0,d1
  313. *    DOS    _SUPER
  314. *    addq.l    #4,a7            * é▒é╠ÆìÄ▀ê╡éóé╠âRü[âhé▄é┼éPüDéOéOéü
  315.     movea.l    (a7)+,a6
  316.     unlk    a6
  317.     move.l    d1,d0
  318.     movem.l    (a7)+,d3-d7/a3-a6
  319.     rts
  320.  
  321. L000b42:
  322.     move.l    a7,$042a(a6)
  323.     move.w    $0006(a1),$0428(a6)
  324.     movea.l    $0010(a1),a0
  325.     move.l    $0014(a1),d0
  326.     bsr    L000c16
  327.     moveq.l    #$00,d6
  328.     moveq.l    #$00,d7
  329.     clr.b    $042e(a6)
  330.     move.l    $0018(a1),$0424(a6)
  331.     bsr    L0015a6
  332.     tst.w    d0
  333.     bne    L00166a
  334.     bsr    L0015a6
  335.     subq.w    #1,d0
  336.     cmp.w    #$0010,d0
  337.     bcc    L00166a
  338.     move.b    L000bc0(pc,d0.w),d0
  339.     bmi    L00166a
  340.     move.w    d0,$0402(a6)
  341.     bsr    L0015a6
  342.     subq.w    #1,d0
  343.     move.w    d0,d1
  344.     bsr    L0015a6
  345.     subq.w    #1,d0
  346.     move.w    d0,d3
  347.     move.w    $000a(a1),d0
  348.     move.w    $000e(a1),d2
  349.     add.w    d0,d1
  350.     add.w    d2,d3
  351.     bsr    L000c2e
  352.     bsr    L000bd0
  353.     bsr    L001566
  354.     bsr    L00162a
  355.     bsr    L000cc0
  356.     bsr    L00151a
  357.     moveq.l    #$00,d0
  358.     rts
  359.  
  360. L000bc0:
  361.     .dc.b    $ff,$ff,$ff,$00,$ff,$ff,$ff,$01
  362.     .dc.b    $ff,$ff,$ff,$ff,$ff,$ff,$02,$03
  363.  
  364. L000bd0:
  365.     move.w    $0402(a6),d0
  366.     moveq.l    #$00,d1
  367.     move.b    L000c0e(pc,d0.w),d1
  368.     cmp.b    $00e80028,d1
  369.     beq    L000bfe
  370.  
  371.     bra    err_scr            * ëµû╩âéü[âhé¬êßéñ
  372.  
  373. *    .comment note            * é▒é▒é⌐éτ
  374.                     *   ü½
  375.     move.b    L000c12(pc,d0.w),d0    *   ü½
  376.     moveq.l    #$df,d1            *   ü½
  377.     or.b    $00e82601,d1        *   ü½
  378.     move.w    d0,-(a7)        *   ü½
  379.     move.w    #$0010,-(a7)        *   ü½
  380.     DOS    _CONCTRL        *   ü½
  381.     addq.l    #4,a7            *   ü½
  382. note    and.b    d1,$00e82601        * é▒é▒é▄é┼ÆìÄ▀
  383.  
  384. L000bfe:
  385.     rts
  386.  
  387. L000c00:
  388.     move.w    $0402(a6),d0
  389.     move.b    L000c0e(pc,d0.w),$00e80028
  390.     rts
  391.  
  392. L000c0e:
  393.     .dc.b    $04,$01,$03,$03
  394. L000c12:
  395.     .dc.b    $01,$04,$05,$05
  396. L000c16:
  397.     and.w    #$fffe,d0
  398.     cmp.l    #$00000080,d0
  399.     blt    L00166e
  400.     move.l    d0,$0420(a6)
  401.     move.l    a0,$041c(a6)
  402.     rts
  403.  
  404. L000c2e:
  405.     movem.l    d0-d5,-(a7)
  406.     movem.w    d0-d3,$0404(a6)
  407.     cmp.w    d0,d1
  408.     bcs    L001674
  409.     cmp.w    d2,d3
  410.     bcs    L001674
  411.     move.w    #$0200,d4
  412.     move.w    d4,d5
  413.     tst.w    $0402(a6)
  414.     bne    L000c52
  415.     add.w    d4,d4
  416. L000c52:
  417.     cmpi.w    #$0002,$0402(a6)
  418.     bcc    L000c5c
  419.     add.w    d5,d5
  420. L000c5c:
  421.     move.w    d4,$0410(a6)
  422.     cmp.w    d4,d0
  423.     bcc    L001674
  424.     cmp.w    d4,d1
  425.     bcc    L001674
  426.     cmp.w    d5,d2
  427.     bcc    L001674
  428.     cmp.w    d5,d3
  429.     bcc    L001674
  430.     move.w    d1,d4
  431.     sub.w    d0,d4
  432.     addq.w    #1,d4
  433.     move.w    d4,$0414(a6)
  434.     move.w    d3,d4
  435.     sub.w    d2,d4
  436.     addq.w    #1,d4
  437.     move.w    d4,$0416(a6)
  438.     move.w    d2,d4
  439.     add.w    d4,d4
  440.     mulu.w    $0410(a6),d4
  441.     add.w    d0,d0
  442.     move.w    d0,$0418(a6)
  443.     add.w    d0,d4
  444.     add.l    #$00c00000,d4
  445.     move.l    d4,$040c(a6)
  446.     add.w    d1,d1
  447.     move.w    d1,$041a(a6)
  448.     move.w    $0410(a6),d0
  449.     sub.w    $0414(a6),d0
  450.     add.w    d0,d0
  451.     move.w    d0,$0412(a6)
  452.     movem.l    (a7)+,d0-d5
  453.     rts
  454.  
  455. L000cc0:
  456.     move.w    $0414(a6),d0
  457.     mulu.w    $0416(a6),d0
  458.     cmp.l    #$00080000,d0
  459.     bls    L000cf6
  460.     move.w    $0416(a6),-(a7)
  461.     move.w    #$0200,$0416(a6)
  462.     bsr    L000cf6
  463.     move.w    (a7)+,d0
  464.     sub.w    #$0200,d0
  465.     move.w    d0,$0416(a6)
  466.     addi.w    #$0010,$040c(a6)
  467.     bsr    L000cf6
  468.     move.w    #$0200,$0416(a6)
  469.     rts
  470.  
  471. L000cf6:
  472.     bsr    L00151a
  473.     movea.l    $040c(a6),a0
  474.     movea.l    $0424(a6),a1
  475.     bsr    L001450
  476.     move.w    $0416(a6),d0
  477.     subq.w    #1,d0
  478. L000d0c:
  479.     move.w    d0,-(a7)
  480.     moveq.l    #$00,d4
  481.     move.w    $0414(a6),d4
  482. L000d14:
  483.     cmp.l    d3,d4
  484.     bcs    L000f0c
  485.     sub.w    d3,d4
  486.     subq.w    #1,d3
  487.     beq    L000d26
  488.     move.w    d3,d0
  489.     bsr    L000f24
  490. L000d26:
  491.     move.w    $0402(a6),d1
  492.     bne    L000d4c
  493.     subq.w    #4,d7
  494.     bcc    L000d40
  495.     add.w    #$0010,d7
  496.     subq.l    #2,d6
  497.     bcc    L000d3c
  498.     bsr    L0015ba
  499. L000d3c:
  500.     swap.w    d5
  501.     move.w    (a5)+,d5
  502. L000d40:
  503.     move.l    d5,d2
  504.     lsr.l    d7,d2
  505.     and.w    #$000f,d2
  506.     bra    L000e2a
  507. L000d4c:
  508.     subq.w    #1,d1
  509.     bne    L000d70
  510.     subq.w    #8,d7
  511.     bcc    L000d64
  512.     add.w    #$0010,d7
  513.     subq.l    #2,d6
  514.     bcc    L000d60
  515.     bsr    L0015ba
  516. L000d60:
  517.     swap.w    d5
  518.     move.w    (a5)+,d5
  519. L000d64:
  520.     move.l    d5,d2
  521.     lsr.l    d7,d2
  522.     and.w    #$00ff,d2
  523.     bra    L000e2a
  524. L000d70:
  525.     dbf    d7,L000d80
  526.     moveq.l    #$0f,d7
  527.     subq.l    #2,d6
  528.     bcc    L000d7e
  529.     bsr    L0015ba
  530. L000d7e:
  531.     move.w    (a5)+,d5
  532. L000d80:
  533.     btst.l    d7,d5
  534.     bne    L000dd6
  535.     cmpi.w    #$0003,$0402(a6)
  536.     beq    L000daa
  537.     sub.w    #$000f,d7
  538.     bcc    L000da2
  539.     add.w    #$0010,d7
  540.     subq.l    #2,d6
  541.     bcc    L000d9e
  542.     bsr    L0015ba
  543. L000d9e:
  544.     swap.w    d5
  545.     move.w    (a5)+,d5
  546. L000da2:
  547.     move.l    d5,d2
  548.     lsr.l    d7,d2
  549.     add.w    d2,d2
  550.     bra    L000dc4
  551. L000daa:
  552.     sub.w    #$0010,d7
  553.     bcc    L000dc0
  554.     add.w    #$0010,d7
  555.     subq.l    #2,d6
  556.     bcc    L000dbc
  557.     bsr    L0015ba
  558. L000dbc:
  559.     swap.w    d5
  560.     move.w    (a5)+,d5
  561. L000dc0:
  562.     move.l    d5,d2
  563.     lsr.l    d7,d2
  564. L000dc4:
  565.     move.w    $0400(a6),d1
  566.     move.w    $02(a6,d1.w),d1
  567.     move.w    d1,$0400(a6)
  568.     move.w    d2,$00(a6,d1.w)
  569.     bra    L000e2a
  570. L000dd6:
  571.     subq.w    #7,d7
  572.     bcc    L000dea
  573.     add.w    #$0010,d7
  574.     subq.l    #2,d6
  575.     bcc    L000de6
  576.     bsr    L0015ba
  577. L000de6:
  578.     swap.w    d5
  579.     move.w    (a5)+,d5
  580. L000dea:
  581.     move.l    d5,d0
  582.     lsr.l    d7,d0
  583.     and.w    #$007f,d0
  584.     lsl.w    #3,d0
  585.     cmp.w    $0400(a6),d0
  586.     beq    L000e26
  587.     move.w    $02(a6,d0.w),d1
  588.     move.w    $04(a6,d0.w),d2
  589.     move.w    d1,$02(a6,d2.w)
  590.     move.w    d2,$04(a6,d1.w)
  591.     move.w    $0400(a6),d1
  592.     move.w    $02(a6,d1.w),d2
  593.     move.w    d0,$02(a6,d1.w)
  594.     move.w    d2,$02(a6,d0.w)
  595.     move.w    d0,$04(a6,d2.w)
  596.     move.w    d1,$04(a6,d0.w)
  597.     move.w    d0,$0400(a6)
  598. L000e26:
  599.     move.w    $00(a6,d0.w),d2
  600. L000e2a:
  601.     movea.l    a0,a2
  602.     movea.l    a1,a3
  603.     move.w    d2,(a0)+
  604.     addq.l    #1,a1
  605.     dbf    d7,L000e42
  606.     moveq.l    #$0f,d7
  607.     subq.l    #2,d6
  608.     bcc    L000e40
  609.     bsr    L0015ba
  610. L000e40:
  611.     move.w    (a5)+,d5
  612. L000e42:
  613.     btst.l    d7,d5
  614.     beq    L000f00
  615.     move.w    $0410(a6),d0
  616.     add.w    d0,d0
  617.     move.w    $0414(a6),d1
  618. L000e52:
  619.     dbf    d7,L000e62
  620.     moveq.l    #$0f,d7
  621.     subq.l    #2,d6
  622.     bcc    L000e60
  623.     bsr    L0015ba
  624. L000e60:
  625.     move.w    (a5)+,d5
  626. L000e62:
  627.     btst.l    d7,d5
  628.     bne    L000ecc
  629.     dbf    d7,L000e76
  630.     moveq.l    #$0f,d7
  631.     subq.l    #2,d6
  632.     bcc    L000e74
  633.     bsr    L0015ba
  634. L000e74:
  635.     move.w    (a5)+,d5
  636. L000e76:
  637.     btst.l    d7,d5
  638.     beq    L000e88
  639.     lea.l    -$02(a2,d0.w),a2
  640.     lea.l    -$01(a3,d1.w),a3
  641.     move.w    d2,(a2)
  642.     st.b    (a3)
  643.     bra    L000e52
  644. L000e88:
  645.     dbf    d7,L000e98
  646.     moveq.l    #$0f,d7
  647.     subq.l    #2,d6
  648.     bcc    L000e96
  649.     bsr    L0015ba
  650. L000e96:
  651.     move.w    (a5)+,d5
  652. L000e98:
  653.     btst.l    d7,d5
  654.     beq    L000f00
  655.     dbf    d7,L000eac
  656.     moveq.l    #$0f,d7
  657.     subq.l    #2,d6
  658.     bcc    L000eaa
  659.     bsr    L0015ba
  660. L000eaa:
  661.     move.w    (a5)+,d5
  662. L000eac:
  663.     btst.l    d7,d5
  664.     bne    L000ebe
  665.     lea.l    -$04(a2,d0.w),a2
  666.     lea.l    -$02(a3,d1.w),a3
  667.     move.w    d2,(a2)
  668.     st.b    (a3)
  669.     bra    L000e52
  670. L000ebe:
  671.     lea.l    $04(a2,d0.w),a2
  672.     lea.l    $02(a3,d1.w),a3
  673.     move.w    d2,(a2)
  674.     st.b    (a3)
  675.     bra    L000e52
  676. L000ecc:
  677.     dbf    d7,L000edc
  678.     moveq.l    #$0f,d7
  679.     subq.l    #2,d6
  680.     bcc    L000eda
  681.     bsr    L0015ba
  682. L000eda:
  683.     move.w    (a5)+,d5
  684. L000edc:
  685.     btst.l    d7,d5
  686.     bne    L000ef0
  687.     lea.l    $00(a2,d0.w),a2
  688.     lea.l    $00(a3,d1.w),a3
  689.     move.w    d2,(a2)
  690.     st.b    (a3)
  691.     bra    L000e52
  692. L000ef0:
  693.     lea.l    $02(a2,d0.w),a2
  694.     lea.l    $01(a3,d1.w),a3
  695.     move.w    d2,(a2)
  696.     st.b    (a3)
  697.     bra    L000e52
  698. L000f00:
  699.     bsr    L001450
  700.     tst.l    d4
  701.     bne    L000d14
  702.     bra    L000f12
  703. L000f0c:
  704.     move.w    d4,d0
  705.     bsr    L000f24
  706.     sub.l    d4,d3
  707. L000f12:
  708.     adda.w    $0412(a6),a0
  709.     move.w    (a7)+,d0
  710.     dbf    d0,L000d0c
  711.     rts
  712.  
  713. L000f1e:
  714.     tst.b    (a1)+
  715.     beq    L000f2a
  716.     move.w    (a0)+,d2
  717. L000f24:
  718.     dbf    d0,L000f1e
  719.     rts
  720.  
  721. L000f2a:
  722.     move.w    d2,(a0)+
  723.     dbf    d0,L000f1e
  724.     rts
  725.  
  726. L000f32:
  727.     move.w    $0414(a6),d0
  728.     mulu.w    $0416(a6),d0
  729.     cmp.l    #$00080000,d0
  730.     bls    L000f68
  731.     move.w    $0416(a6),-(a7)
  732.     move.w    #$0200,$0416(a6)
  733.     bsr    L000f68
  734.     move.w    (a7)+,d0
  735.     sub.w    #$0200,d0
  736.     move.w    d0,$0416(a6)
  737.     addi.w    #$0010,$040c(a6)
  738.     bsr    L000f68
  739.     move.w    #$0200,$0416(a6)
  740.     rts
  741.  
  742. L000f68:
  743.     bsr    L0014d2
  744.     movea.l    $040c(a6),a0
  745.     movea.l    $0424(a6),a1
  746.     moveq.l    #$00,d3
  747.     move.w    $0416(a6),d1
  748.     subq.w    #1,d1
  749. L000f7c:
  750.     move.w    $0414(a6),d2
  751.     subq.w    #1,d2
  752. L000f82:
  753.     addq.l    #1,d3
  754.     addq.l    #2,a0
  755.     tst.b    (a1)+
  756.     dbne    d2,L000f82
  757.     beq    L000fa8
  758.     move.l    d3,d0
  759.     bsr    L00135e
  760.     move.w    -$0002(a0),d0
  761.     move.w    d1,-(a7)
  762.     bsr    L00122a
  763.     move.w    (a7)+,d1
  764.     bsr    L000fba
  765.     moveq.l    #$00,d3
  766.     dbf    d2,L000f82
  767. L000fa8:
  768.     adda.w    $0412(a6),a0
  769.     dbf    d1,L000f7c
  770.     addq.l    #1,d3
  771.     move.l    d3,d0
  772.     bsr    L00135e
  773.     rts
  774.  
  775. L000fba:
  776.     movem.l    d1-d3/a0-a1,-(a7)
  777.     move.w    -(a0),d2
  778.     subq.l    #1,a1
  779.     move.l    a0,d4
  780.     move.w    $0410(a6),d0
  781.     add.w    d0,d0
  782.     movea.w    d0,a2
  783.     movea.w    $0414(a6),a3
  784.     subq.w    #1,d0
  785.     and.w    d0,d4
  786.     moveq.l    #$00,d3
  787.     move.w    d1,d3
  788.     bra    L0011e6
  789. L000fdc:
  790.     adda.w    a2,a0
  791.     adda.w    a3,a1
  792.     tst.b    (a1)
  793.     beq    L00102c
  794.     cmp.w    (a0),d2
  795.     bne    L00102c
  796.     bset.l    #$1f,d3
  797.     bne    L001002
  798.     dbf    d7,L001000
  799.     moveq.l    #$0f,d7
  800.     move.w    d5,(a5)+
  801.     subq.l    #2,d6
  802.     bne    L000ffe
  803.     bsr    L0015ea
  804. L000ffe:
  805.     moveq.l    #$00,d5
  806. L001000:
  807.     bset.l    d7,d5
  808. L001002:
  809.     dbf    d7,L001014
  810.     moveq.l    #$0f,d7
  811.     move.w    d5,(a5)+
  812.     subq.l    #2,d6
  813.     bne    L001012
  814.     bsr    L0015ea
  815. L001012:
  816.     moveq.l    #$00,d5
  817. L001014:
  818.     bset.l    d7,d5
  819.     dbf    d7,L001028
  820.     moveq.l    #$0f,d7
  821.     move.w    d5,(a5)+
  822.     subq.l    #2,d6
  823.     bne    L001026
  824.     bsr    L0015ea
  825. L001026:
  826.     moveq.l    #$00,d5
  827. L001028:
  828.     bra    L0011e4
  829. L00102c:
  830.     subq.w    #2,d4
  831.     cmp.w    $0418(a6),d4
  832.     blt    L001088
  833.     tst.b    -$0001(a1)
  834.     beq    L001088
  835.     cmp.w    -$0002(a0),d2
  836.     bne    L001088
  837.     subq.l    #2,a0
  838.     subq.l    #1,a1
  839.     bset.l    #$1f,d3
  840.     bne    L00105e
  841.     dbf    d7,L00105c
  842.     moveq.l    #$0f,d7
  843.     move.w    d5,(a5)+
  844.     subq.l    #2,d6
  845.     bne    L00105a
  846.     bsr    L0015ea
  847. L00105a:
  848.     moveq.l    #$00,d5
  849. L00105c:
  850.     bset.l    d7,d5
  851. L00105e:
  852.     dbf    d7,L001070
  853.     moveq.l    #$0f,d7
  854.     move.w    d5,(a5)+
  855.     subq.l    #2,d6
  856.     bne    L00106e
  857.     bsr    L0015ea
  858. L00106e:
  859.     moveq.l    #$00,d5
  860. L001070:
  861.     dbf    d7,L001082
  862.     moveq.l    #$0f,d7
  863.     move.w    d5,(a5)+
  864.     subq.l    #2,d6
  865.     bne    L001080
  866.     bsr    L0015ea
  867. L001080:
  868.     moveq.l    #$00,d5
  869. L001082:
  870.     bset.l    d7,d5
  871.     bra    L0011e4
  872. L001088:
  873.     addq.w    #4,d4
  874.     cmp.w    $041a(a6),d4
  875.     bgt    L0010e6
  876.     tst.b    $0001(a1)
  877.     beq    L0010e6
  878.     cmp.w    $0002(a0),d2
  879.     bne    L0010e6
  880.     addq.l    #2,a0
  881.     addq.l    #1,a1
  882.     bset.l    #$1f,d3
  883.     bne    L0010ba
  884.     dbf    d7,L0010b8
  885.     moveq.l    #$0f,d7
  886.     move.w    d5,(a5)+
  887.     subq.l    #2,d6
  888.     bne    L0010b6
  889.     bsr    L0015ea
  890. L0010b6:
  891.     moveq.l    #$00,d5
  892. L0010b8:
  893.     bset.l    d7,d5
  894. L0010ba:
  895.     dbf    d7,L0010cc
  896.     moveq.l    #$0f,d7
  897.     move.w    d5,(a5)+
  898.     subq.l    #2,d6
  899.     bne    L0010ca
  900.     bsr    L0015ea
  901. L0010ca:
  902.     moveq.l    #$00,d5
  903. L0010cc:
  904.     bset.l    d7,d5
  905.     dbf    d7,L0010e0
  906.     moveq.l    #$0f,d7
  907.     move.w    d5,(a5)+
  908.     subq.l    #2,d6
  909.     bne    L0010de
  910.     bsr    L0015ea
  911. L0010de:
  912.     moveq.l    #$00,d5
  913. L0010e0:
  914.     bset.l    d7,d5
  915.     bra    L0011e4
  916. L0010e6:
  917.     subq.w    #6,d4
  918.     cmp.w    $0418(a6),d4
  919.     blt    L001166
  920.     tst.b    -$0002(a1)
  921.     beq    L001166
  922.     cmp.w    -$0004(a0),d2
  923.     bne    L001166
  924.     subq.l    #4,a0
  925.     subq.l    #2,a1
  926.     bset.l    #$1f,d3
  927.     bne    L001118
  928.     dbf    d7,L001116
  929.     moveq.l    #$0f,d7
  930.     move.w    d5,(a5)+
  931.     subq.l    #2,d6
  932.     bne    L001114
  933.     bsr    L0015ea
  934. L001114:
  935.     moveq.l    #$00,d5
  936. L001116:
  937.     bset.l    d7,d5
  938. L001118:
  939.     dbf    d7,L00112a
  940.     moveq.l    #$0f,d7
  941.     move.w    d5,(a5)+
  942.     subq.l    #2,d6
  943.     bne    L001128
  944.     bsr    L0015ea
  945. L001128:
  946.     moveq.l    #$00,d5
  947. L00112a:
  948.     dbf    d7,L00113c
  949.     moveq.l    #$0f,d7
  950.     move.w    d5,(a5)+
  951.     subq.l    #2,d6
  952.     bne    L00113a
  953.     bsr    L0015ea
  954. L00113a:
  955.     moveq.l    #$00,d5
  956. L00113c:
  957.     dbf    d7,L00114e
  958.     moveq.l    #$0f,d7
  959.     move.w    d5,(a5)+
  960.     subq.l    #2,d6
  961.     bne    L00114c
  962.     bsr    L0015ea
  963. L00114c:
  964.     moveq.l    #$00,d5
  965. L00114e:
  966.     bset.l    d7,d5
  967.     dbf    d7,L001162
  968.     moveq.l    #$0f,d7
  969.     move.w    d5,(a5)+
  970.     subq.l    #2,d6
  971.     bne    L001160
  972.     bsr    L0015ea
  973. L001160:
  974.     moveq.l    #$00,d5
  975. L001162:
  976.     bra.w    L0011e4
  977. L001166:
  978.     addq.w    #8,d4
  979.     cmp.w    $041a(a6),d4
  980.     bgt    L0011ea
  981.     tst.b    $0002(a1)
  982.     beq    L0011ea
  983.     cmp.w    $0004(a0),d2
  984.     bne    L0011ea
  985.     addq.l    #4,a0
  986.     addq.l    #2,a1
  987.     bset.l    #$1f,d3
  988.     bne    L001198
  989.     dbf    d7,L001196
  990.     moveq.l    #$0f,d7
  991.     move.w    d5,(a5)+
  992.     subq.l    #2,d6
  993.     bne    L001194
  994.     bsr    L0015ea
  995. L001194:
  996.     moveq.l    #$00,d5
  997. L001196:
  998.     bset.l    d7,d5
  999. L001198:
  1000.     dbf    d7,L0011aa
  1001.     moveq.l    #$0f,d7
  1002.     move.w    d5,(a5)+
  1003.     subq.l    #2,d6
  1004.     bne    L0011a8
  1005.     bsr    L0015ea
  1006. L0011a8:
  1007.     moveq.l    #$00,d5
  1008. L0011aa:
  1009.     dbf    d7,L0011bc
  1010.     moveq.l    #$0f,d7
  1011.     move.w    d5,(a5)+
  1012.     subq.l    #2,d6
  1013.     bne    L0011ba
  1014.     bsr    L0015ea
  1015. L0011ba:
  1016.     moveq.l    #$00,d5
  1017. L0011bc:
  1018.     dbf    d7,L0011ce
  1019.     moveq.l    #$0f,d7
  1020.     move.w    d5,(a5)+
  1021.     subq.l    #2,d6
  1022.     bne    L0011cc
  1023.     bsr    L0015ea
  1024. L0011cc:
  1025.     moveq.l    #$00,d5
  1026. L0011ce:
  1027.     bset.l    d7,d5
  1028.     dbf    d7,L0011e2
  1029.     moveq.l    #$0f,d7
  1030.     move.w    d5,(a5)+
  1031.     subq.l    #2,d6
  1032.     bne    L0011e0
  1033.     bsr    L0015ea
  1034. L0011e0:
  1035.     moveq.l    #$00,d5
  1036. L0011e2:
  1037.     bset.l    d7,d5
  1038. L0011e4:
  1039.     clr.b    (a1)
  1040. L0011e6:
  1041.     dbf    d3,L000fdc
  1042. L0011ea:
  1043.     tst.l    d3
  1044.     bpl    L001212
  1045.     dbf    d7,L001200
  1046.     moveq.l    #$0f,d7
  1047.     move.w    d5,(a5)+
  1048.     subq.l    #2,d6
  1049.     bne    L0011fe
  1050.     bsr    L0015ea
  1051. L0011fe:
  1052.     moveq.l    #$00,d5
  1053. L001200:
  1054.     dbf    d7,L001212
  1055.     moveq.l    #$0f,d7
  1056.     move.w    d5,(a5)+
  1057.     subq.l    #2,d6
  1058.     bne    L001210
  1059.     bsr    L0015ea
  1060. L001210:
  1061.     moveq.l    #$00,d5
  1062. L001212:
  1063.     dbf    d7,L001224
  1064.     moveq.l    #$0f,d7
  1065.     move.w    d5,(a5)+
  1066.     subq.l    #2,d6
  1067.     bne    L001222
  1068.     bsr    L0015ea
  1069. L001222:
  1070.     moveq.l    #$00,d5
  1071. L001224:
  1072.     movem.l    (a7)+,d1-d3/a0-a1
  1073.     rts
  1074.  
  1075. L00122a:
  1076.     move.w    $0402(a6),d1
  1077.     bne    L001250
  1078.     ext.l    d0
  1079.     subq.w    #4,d7
  1080.     rol.l    d7,d0
  1081.     or.l    d0,d5
  1082.     tst.w    d7
  1083.     bpl    L00124e
  1084.     add.w    #$0010,d7
  1085.     move.w    d5,(a5)+
  1086.     subq.l    #2,d6
  1087.     bne    L00124a
  1088.     bsr    L0015ea
  1089. L00124a:
  1090.     clr.w    d5
  1091.     swap.w    d5
  1092. L00124e:
  1093.     rts
  1094.  
  1095. L001250:
  1096.     subq.w    #1,d1
  1097.     bne    L001274
  1098.     ext.l    d0
  1099.     subq.w    #8,d7
  1100.     rol.l    d7,d0
  1101.     or.l    d0,d5
  1102.     tst.w    d7
  1103.     bpl    L001272
  1104.     add.w    #$0010,d7
  1105.     move.w    d5,(a5)+
  1106.     subq.l    #2,d6
  1107.     bne    L00126e
  1108.     bsr    L0015ea
  1109. L00126e:
  1110.     clr.w    d5
  1111.     swap.w    d5
  1112. L001272:
  1113.     rts
  1114.  
  1115. L001274:
  1116.     lea.l    -$0008(a6),a2
  1117.     moveq.l    #$7f,d1
  1118. L00127a:
  1119.     lea.l    $0008(a2),a2
  1120.     cmp.w    (a2),d0
  1121.     dbeq    d1,L00127a
  1122.     bne    L0012ea
  1123.     eori.w    #$007f,d1
  1124.     movem.w    d1-d2,-(a7)
  1125.     lsl.w    #3,d1
  1126.     cmp.w    $0400(a6),d1
  1127.     beq    L0012c2
  1128.     move.w    $02(a6,d1.w),d0
  1129.     move.w    $04(a6,d1.w),d2
  1130.     move.w    d0,$02(a6,d2.w)
  1131.     move.w    d2,$04(a6,d0.w)
  1132.     move.w    $0400(a6),d0
  1133.     move.w    $02(a6,d0.w),d2
  1134.     move.w    d1,$02(a6,d0.w)
  1135.     move.w    d2,$02(a6,d1.w)
  1136.     move.w    d1,$04(a6,d2.w)
  1137.     move.w    d0,$04(a6,d1.w)
  1138.     move.w    d1,$0400(a6)
  1139. L0012c2:
  1140.     movem.w    (a7)+,d1-d2
  1141.     ext.l    d1
  1142.     or.b    #$80,d1
  1143.     subq.w    #8,d7
  1144.     rol.l    d7,d1
  1145.     or.l    d1,d5
  1146.     tst.w    d7
  1147.     bpl    L0012e8
  1148.     add.w    #$0010,d7
  1149.     move.w    d5,(a5)+
  1150.     subq.l    #2,d6
  1151.     bne    L0012e4
  1152.     bsr    L0015ea
  1153. L0012e4:
  1154.     clr.w    d5
  1155.     swap.w    d5
  1156. L0012e8:
  1157.     rts
  1158.  
  1159. L0012ea:
  1160.     move.w    $0400(a6),d1
  1161.     move.w    $02(a6,d1.w),d1
  1162.     move.w    d1,$0400(a6)
  1163.     move.w    d0,$00(a6,d1.w)
  1164.     cmpi.w    #$0003,$0402(a6)
  1165.     beq    L001326
  1166.     lsr.w    #1,d0
  1167.     ext.l    d0
  1168.     sub.w    #$0010,d7
  1169.     rol.l    d7,d0
  1170.     or.l    d0,d5
  1171.     tst.w    d7
  1172.     bpl    L001324
  1173.     add.w    #$0010,d7
  1174.     move.w    d5,(a5)+
  1175.     subq.l    #2,d6
  1176.     bne    L001320
  1177.     bsr    L0015ea
  1178. L001320:
  1179.     clr.w    d5
  1180.     swap.w    d5
  1181. L001324:
  1182.     rts
  1183.  
  1184. L001326:
  1185.     dbf    d7,L001338
  1186.     moveq.l    #$0f,d7
  1187.     move.w    d5,(a5)+
  1188.     subq.l    #2,d6
  1189.     bne    L001336
  1190.     bsr    L0015ea
  1191. L001336:
  1192.     moveq.l    #$00,d5
  1193. L001338:
  1194.     and.l    #$0000ffff,d0
  1195.     sub.w    #$0010,d7
  1196.     rol.l    d7,d0
  1197.     or.l    d0,d5
  1198.     tst.w    d7
  1199.     bpl    L00135c
  1200.     add.w    #$0010,d7
  1201.     move.w    d5,(a5)+
  1202.     subq.l    #2,d6
  1203.     bne    L001358
  1204.     bsr    L0015ea
  1205. L001358:
  1206.     clr.w    d5
  1207.     swap.w    d5
  1208. L00135c:
  1209.     rts
  1210.  
  1211. L00135e:
  1212.     movem.l    d0-d4,-(a7)
  1213.     move.l    d0,d4
  1214.     moveq.l    #$00,d1
  1215.     moveq.l    #$00,d3
  1216.     moveq.l    #$01,d2
  1217. L00136a:
  1218.     addq.w    #1,d1
  1219.     add.l    d2,d2
  1220.     add.l    d2,d3
  1221.     cmp.l    d3,d4
  1222.     bhi    L00136a
  1223.     addq.l    #1,d4
  1224.     sub.l    d2,d4
  1225.     subq.l    #1,d2
  1226.     and.l    d2,d4
  1227.     subq.l    #1,d2
  1228.     cmp.w    #$0010,d1
  1229.     bhi    L0013c2
  1230.     sub.w    d1,d7
  1231.     rol.l    d7,d2
  1232.     or.l    d2,d5
  1233.     tst.w    d7
  1234.     bpl    L0013a0
  1235.     add.w    #$0010,d7
  1236.     move.w    d5,(a5)+
  1237.     subq.l    #2,d6
  1238.     bne    L00139c
  1239.     bsr    L0015ea
  1240. L00139c:
  1241.     clr.w    d5
  1242.     swap.w    d5
  1243. L0013a0:
  1244.     sub.w    d1,d7
  1245.     rol.l    d7,d4
  1246.     or.l    d4,d5
  1247.     tst.w    d7
  1248.     bpl    L0013bc
  1249.     add.w    #$0010,d7
  1250.     move.w    d5,(a5)+
  1251.     subq.l    #2,d6
  1252.     bne    L0013b8
  1253.     bsr    L0015ea
  1254. L0013b8:
  1255.     clr.w    d5
  1256.     swap.w    d5
  1257. L0013bc:
  1258.     movem.l    (a7)+,d0-d4
  1259.     rts
  1260.  
  1261. L0013c2:
  1262.     moveq.l    #$10,d3
  1263.     sub.w    d3,d1
  1264.     move.l    d2,d0
  1265.     clr.w    d0
  1266.     swap.w    d0
  1267.     sub.w    d1,d7
  1268.     rol.l    d7,d0
  1269.     or.l    d0,d5
  1270.     tst.w    d7
  1271.     bpl    L0013e8
  1272.     add.w    #$0010,d7
  1273.     move.w    d5,(a5)+
  1274.     subq.l    #2,d6
  1275.     bne    L0013e4
  1276.     bsr    L0015ea
  1277. L0013e4:
  1278.     clr.w    d5
  1279.     swap.w    d5
  1280. L0013e8:
  1281.     moveq.l    #$00,d0
  1282.     move.w    d2,d0
  1283.     sub.w    d3,d7
  1284.     rol.l    d7,d0
  1285.     or.l    d0,d5
  1286.     tst.w    d7
  1287.     bpl    L001408
  1288.     add.w    #$0010,d7
  1289.     move.w    d5,(a5)+
  1290.     subq.l    #2,d6
  1291.     bne    L001404
  1292.     bsr    L0015ea
  1293. L001404:
  1294.     clr.w    d5
  1295.     swap.w    d5
  1296. L001408:
  1297.     move.l    d4,d0
  1298.     clr.w    d0
  1299.     swap.w    d0
  1300.     sub.w    d1,d7
  1301.     rol.l    d7,d0
  1302.     or.l    d0,d5
  1303.     tst.w    d7
  1304.     bpl    L00142a
  1305.     add.w    #$0010,d7
  1306.     move.w    d5,(a5)+
  1307.     subq.l    #2,d6
  1308.     bne    L001426
  1309.     bsr    L0015ea
  1310. L001426:
  1311.     clr.w    d5
  1312.     swap.w    d5
  1313. L00142a:
  1314.     moveq.l    #$00,d0
  1315.     move.w    d4,d0
  1316.     sub.w    d3,d7
  1317.     rol.l    d7,d0
  1318.     or.l    d0,d5
  1319.     tst.w    d7
  1320.     bpl    L00144a
  1321.     add.w    #$0010,d7
  1322.     move.w    d5,(a5)+
  1323.     subq.l    #2,d6
  1324.     bne    L001446
  1325.     bsr    L0015ea
  1326. L001446:
  1327.     clr.w    d5
  1328.     swap.w    d5
  1329. L00144a:
  1330.     movem.l    (a7)+,d0-d4
  1331.     rts
  1332.  
  1333. L001450:
  1334.     moveq.l    #$00,d0
  1335. L001452:
  1336.     addq.w    #1,d0
  1337.     dbf    d7,L001464
  1338.     moveq.l    #$0f,d7
  1339.     subq.l    #2,d6
  1340.     bcc    L001462
  1341.     bsr    L0015ba
  1342. L001462:
  1343.     move.w    (a5)+,d5
  1344. L001464:
  1345.     btst.l    d7,d5
  1346.     bne    L001452
  1347.     moveq.l    #$01,d3
  1348.     lsl.l    d0,d3
  1349.     subq.l    #1,d3
  1350.     cmp.w    #$0010,d0
  1351.     bcc    L001492
  1352.     sub.w    d0,d7
  1353.     bcc    L001488
  1354.     add.w    #$0010,d7
  1355.     subq.l    #2,d6
  1356.     bcc    L001484
  1357.     bsr    L0015ba
  1358. L001484:
  1359.     swap.w    d5
  1360.     move.w    (a5)+,d5
  1361. L001488:
  1362.     move.l    d5,d1
  1363.     lsr.l    d7,d1
  1364.     and.l    d3,d1
  1365.     add.l    d1,d3
  1366.     rts
  1367.  
  1368. L001492:
  1369.     sub.w    #$0010,d0
  1370.     sub.w    d0,d7
  1371.     bcc    L0014aa
  1372.     add.w    #$0010,d7
  1373.     subq.l    #2,d6
  1374.     bcc    L0014a6
  1375.     bsr    L0015ba
  1376. L0014a6:
  1377.     swap.w    d5
  1378.     move.w    (a5)+,d5
  1379. L0014aa:
  1380.     move.l    d5,d1
  1381.     lsr.l    d7,d1
  1382.     sub.w    #$0010,d7
  1383.     bcc    L0014c4
  1384.     add.w    #$0010,d7
  1385.     subq.l    #2,d6
  1386.     bcc    L0014c0
  1387.     bsr    L0015ba
  1388. L0014c0:
  1389.     swap.w    d5
  1390.     move.w    (a5)+,d5
  1391. L0014c4:
  1392.     move.l    d5,d0
  1393.     lsr.l    d7,d0
  1394.     swap.w    d1
  1395.     move.w    d0,d1
  1396.     and.l    d3,d1
  1397.     add.l    d1,d3
  1398.     rts
  1399.  
  1400. L0014d2:
  1401.     movem.l    d0-d4/a0-a1,-(a7)
  1402.     moveq.l    #$ff,d2
  1403.     cmpi.w    #$0002,$0402(a6)
  1404.     bne    L0014e2
  1405.     subq.w    #1,d2
  1406. L0014e2:
  1407.     movea.l    $040c(a6),a0
  1408.     movea.l    $0424(a6),a1
  1409.     move.w    (a0),d0
  1410.     not.w    d0
  1411.     move.w    $0416(a6),d3
  1412.     subq.w    #1,d3
  1413. L0014f4:
  1414.     move.w    $0414(a6),d4
  1415.     subq.w    #1,d4
  1416. L0014fa:
  1417.     move.w    (a0),d1
  1418.     and.w    d2,d1
  1419.     cmp.w    d1,d0
  1420.     sne.b    (a1)+
  1421.     beq    L001506
  1422.     move.w    d1,d0
  1423. L001506:
  1424.     move.w    d1,(a0)+
  1425.     dbf    d4,L0014fa
  1426.     adda.w    $0412(a6),a0
  1427.     dbf    d3,L0014f4
  1428.     movem.l    (a7)+,d0-d4/a0-a1
  1429.     rts
  1430.  
  1431. L00151a:
  1432.     movem.l    d0-d7/a0-a2,-(a7)
  1433.     movea.l    $0424(a6),a0
  1434.     move.w    $0414(a6),d0
  1435.     mulu.w    $0416(a6),d0
  1436.     adda.l    d0,a0
  1437.     moveq.l    #$7f,d1
  1438.     and.w    d0,d1
  1439.     lsr.l    #7,d0
  1440.     moveq.l    #$00,d2
  1441.     move.l    d2,d3
  1442.     move.l    d2,d4
  1443.     move.l    d2,d5
  1444.     move.l    d2,d6
  1445.     move.l    d2,d7
  1446.     movea.l    d2,a1
  1447.     movea.l    d2,a2
  1448.     bra    L001546
  1449. L001544:
  1450.     move.b    d2,-(a0)
  1451. L001546:
  1452.     dbf    d1,L001544
  1453.     bra    L00155c
  1454. L00154c:
  1455.     movem.l    d2-d7/a1-a2,-(a0)
  1456.     movem.l    d2-d7/a1-a2,-(a0)
  1457.     movem.l    d2-d7/a1-a2,-(a0)
  1458.     movem.l    d2-d7/a1-a2,-(a0)
  1459. L00155c:
  1460.     dbf    d0,L00154c
  1461.     movem.l    (a7)+,d0-d7/a0-a2
  1462.     rts
  1463.  
  1464. L001566:
  1465.     moveq.l    #$0f,d1
  1466.     move.w    $0402(a6),d0
  1467.     beq    L001576
  1468.     subq.w    #1,d0
  1469.     bne    L001584
  1470.     move.w    #$00ff,d1
  1471. L001576:
  1472.     lea.l    $00e82000,a0
  1473. L00157c:
  1474.     bsr    L0015a6
  1475.     move.w    d0,(a0)+
  1476.     dbf    d1,L00157c
  1477. L001584:
  1478.     rts
  1479.  
  1480. L001586:
  1481.     moveq.l    #$0f,d1
  1482.     move.w    $0402(a6),d0
  1483.     beq    L001596
  1484.     subq.w    #1,d0
  1485.     bne    L0015a4
  1486.     move.w    #$00ff,d1
  1487. L001596:
  1488.     lea.l    $00e82000,a0
  1489. L00159c:
  1490.     move.w    (a0)+,d0
  1491.     bsr    L0015b0
  1492.     dbf    d1,L00159c
  1493. L0015a4:
  1494.     rts
  1495.  
  1496. L0015a6:
  1497.     subq.l    #2,d6
  1498.     bcc    L0015ac
  1499.     bsr    L0015ba
  1500. L0015ac:
  1501.     move.w    (a5)+,d0
  1502.     rts
  1503.  
  1504. L0015b0:
  1505.     move.w    d0,(a5)+
  1506.     subq.l    #2,d6
  1507.     bne    L0015b8
  1508.     bsr    L0015ba
  1509. L0015b8:
  1510.     rts
  1511.  
  1512. L0015ba:
  1513.     move.l    d0,-(a7)
  1514.     tst.b    $042e(a6)
  1515.     bne    L001662
  1516.     movea.l    $041c(a6),a5
  1517.     move.l    $0420(a6),-(a7)
  1518.     pea.l    (a5)
  1519.     move.w    $0428(a6),-(a7)
  1520.     DOS    _READ
  1521.     addq.l    #6,a7
  1522.     cmp.l    (a7)+,d0
  1523.     beq    L0015e4
  1524.     tst.l    d0
  1525.     bmi    L001672
  1526.     st.b    $042e(a6)
  1527. L0015e4:
  1528.     add.l    d0,d6
  1529.     move.l    (a7)+,d0
  1530.     rts
  1531.  
  1532. L0015ea:
  1533.     move.l    d0,-(a7)
  1534.     movea.l    $041c(a6),a5
  1535.     move.l    $0420(a6),-(a7)
  1536.     pea.l    (a5)
  1537.     move.w    $0428(a6),-(a7)
  1538.     DOS    _WRITE
  1539.     addq.l    #6,a7
  1540.     tst.l    d0
  1541.     bmi    L001672
  1542.     cmp.l    (a7)+,d0
  1543.     bne    L001666
  1544.     add.l    d0,d6
  1545.     move.l    (a7)+,d0
  1546.     rts
  1547.  
  1548. L00160c:
  1549.     move.w    d5,(a5)+
  1550.     suba.l    $041c(a6),a5
  1551.     move.l    a5,-(a7)
  1552.     move.l    $041c(a6),-(a7)
  1553.     move.w    $0428(a6),-(a7)
  1554.     DOS    _WRITE
  1555.     addq.l    #6,a7
  1556.     tst.l    d0
  1557.     bmi    L001672
  1558.     cmp.l    (a7)+,d0
  1559.     bne    L001666
  1560.     rts
  1561.  
  1562. L00162a:
  1563.     movem.l    d0-d2/a0,-(a7)
  1564.     movea.l    a6,a0
  1565.     moveq.l    #$08,d1
  1566.     move.w    #$03f8,d2
  1567.     moveq.l    #$7f,d0
  1568. L001638:
  1569.     clr.w    (a0)+
  1570.     move.w    d1,(a0)+
  1571.     addq.w    #8,d1
  1572.     cmp.w    #$0400,d1
  1573.     bne    L001646
  1574.     clr.w    d1
  1575. L001646:
  1576.     move.w    d2,(a0)+
  1577.     addq.w    #8,d2
  1578.     cmp.w    #$0400,d2
  1579.     bne    L001652
  1580.     clr.w    d2
  1581. L001652:
  1582.     addq.l    #2,a0
  1583.     dbf    d0,L001638
  1584.     clr.w    $0400(a6)
  1585.     movem.l    (a7)+,d0-d2/a0
  1586.     rts
  1587.  
  1588. err_scr:
  1589.     moveq.l    #-38,d0        * ëµû╩âéü[âhé¬êßéñ
  1590.     bra    L00167a
  1591. L001662:
  1592.     moveq.l    #$dc,d0
  1593.     bra    L00167a
  1594. L001666:
  1595.     moveq.l    #$dd,d0
  1596.     bra    L00167a
  1597. L00166a:
  1598.     moveq.l    #$e1,d0
  1599.     bra    L00167a
  1600. L00166e:
  1601.     moveq.l    #$f8,d0
  1602.     bra    L00167a
  1603. L001672:
  1604.     bra    L00167a
  1605. L001674:
  1606.     moveq.l    #$e0,d0
  1607.     bra    L00167a
  1608. L001678:
  1609.     moveq.l    #$df,d0
  1610. L00167a:
  1611.     movea.l    $042a(a6),a7
  1612.     rts
  1613.  
  1614.  
  1615. *******************************************
  1616.  
  1617.     .data
  1618.  
  1619. normal_end:
  1620.     dc.w    0
  1621.     dc.l    0
  1622.     dc.l    0
  1623. x0:
  1624.     ds.l    1
  1625. y0:
  1626.     ds.l    1
  1627. x1:
  1628.     ds.l    1
  1629. y1:
  1630.     ds.l    1
  1631. scrn:
  1632.     ds.w    1
  1633. f_handle:
  1634.     ds.l    1
  1635. buff_size:
  1636.     ds.l    1
  1637. buff_start:
  1638.     ds.l    1
  1639. buff_end:
  1640.     ds.l    1
  1641. memptr:
  1642.     ds.l    1
  1643. sp_ptr:
  1644.     ds.l    1
  1645. sp_save:
  1646.     ds.l    1
  1647.  
  1648. *******************************
  1649. *    âGâëü[âüâbâZü[âW
  1650. *******************************
  1651. chigau_mes:
  1652.     dc.b    'ëµû╩âéü[âhé¬êßéóé▄é╖',0,0
  1653. read_mes:
  1654.     dc.b    'é▒éΩê╚Åπô╟é▀é▄é╣é±',0,0
  1655. disk_full_mes:
  1656.     dc.b    'âfâBâXâNé¬éóé┴é╧éóé┼é╖',0,0
  1657. write_mes:
  1658.     dc.b    'âfâBâXâNé╔Åæé½ì₧é▀é▄é╣é±',0,0
  1659. scr_mes:
  1660.     dc.b    'âOâëâtâBâbâNëµû╩é¬Åëè·ë╗é│éΩé─éóé▄é╣é±',0,0
  1661. point_mes:
  1662.     dc.b    'ê╩ÆuÄwÆΦé╔îδéΦé¬éáéΦé▄é╖',0,0
  1663. no_mem_mes:
  1664.     dc.b    'Ä└ìsé╔òKùvé╚âüâéâèé¬éáéΦé▄é╣é±',0,0
  1665. no_pic_mes:
  1666.     dc.b    'éoéhébî`Ä«é╠âtâ@âCâïé┼é═éáéΦé▄é╣é±',0,0
  1667. no_file_mes:
  1668.     dc.b    'ÄwÆΦé│éΩé╜âtâ@âCâïé¬î⌐é┬é⌐éΦé▄é╣é±',0,0
  1669. dummy_mes:
  1670.     dc.b    0
  1671.  
  1672.     .end
  1673.  
  1674.